package br.com.projetosivan.controller;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.com.projetosivan.dao.UsuarioDao;
import br.com.projetosivan.dao.impl.HelperDaoImp;
import br.com.projetosivan.dao.impl.UsuarioDaoImp;
import br.com.projetosivan.model.Cidade;
import br.com.projetosivan.model.Estado;
import br.com.projetosivan.model.Usuario;

@SessionScoped
@ManagedBean
public class UsuarioController {

    private Usuario usuario;
    private DataModel listaUsuarios;
    private DataModel listaEstados;
    private int selectedEstado;
    private int idCidade;
    
    public UsuarioController(){
    	usuario = new Usuario();
    }
    
    
    public int getIdCidade() {
		return idCidade;
	}
	public void setIdCidade(int idCidade) {
		this.idCidade = idCidade;
	}
	public DataModel getListaUsuarios() {
		return listaUsuarios;
	}

	public void setListaUsuarios(DataModel listaUsuarios) {
		this.listaUsuarios = listaUsuarios;
	}

	public DataModel getListaEstados() {
		return listaEstados;
	}

	public void setListaEstados(DataModel listaEstados) {
		this.listaEstados = listaEstados;
	}

	public int getSelectedEstado() {
		return selectedEstado;
	}

	public void setSelectedEstado(int selectedEstado) {
		this.selectedEstado = selectedEstado;
	}

	public DataModel getListarUsuarios() {
        List<Usuario> lista = new UsuarioDaoImp().list();
        listaUsuarios = new ListDataModel(lista);
        return listaUsuarios;
    }
    
	public Usuario getUsuario() {
        return usuario;
    }
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    public String excluirUsuario(){
        Usuario usuarioTemp = (Usuario)(listaUsuarios.getRowData());
        UsuarioDao dao = new UsuarioDaoImp();
        dao.remove(usuarioTemp);
        return "cadastrarUsuario";
    }
    public String adicionarUsuario(){
        UsuarioDao dao = new UsuarioDaoImp();
        
        Cidade cidade = new Cidade();
        cidade.setId(new Long(idCidade));
        usuario.setCidade(cidade);
        dao.save(usuario);
        
        return "minhaconta";
    }
    public String alterarUsuario(){
        UsuarioDao dao = new UsuarioDaoImp();
        Cidade cidade = new Cidade();
        cidade.setId(new Long(idCidade));
        dao.update(usuario);
        return "cadastrarUsuario";
    }
    
    public DataModel getListarEstados() {
        List<Estado> lista = new HelperDaoImp().listEstado();
        listaEstados = new ListDataModel(lista);
        return listaEstados;
    }
    public DataModel getListarCidades() {
    	DataModel listaCidades;
    	List<Cidade> lista = new HelperDaoImp().listCidadeByEstado(selectedEstado);
    	listaCidades = new ListDataModel(lista);
        return listaCidades;
    }
}